package ocio.services;

import java.util.List;
import com.opensymphony.xwork2.Action;

import ocio.actions.AddSubscripcionAction;
import ocio.beans.Subscripcion;
import ocio.dao.SubscripcionDao;

/**
 * Clase encargada de ofrecer la lógica de negocio asociada a la clase Subscripcion.
 * Ofrece funciones CRUD para la gestión de subscripciones.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Subscripcion
 * @see ocio.services.ServiceIF
 */
public class SubscripcionService implements ServiceIF {

	SubscripcionDao subscripcionDao;
	
	public SubscripcionService (){
		subscripcionDao = new SubscripcionDao();
	}
	
	/**
	 * Solicita que se añada una subscripción con los datos recogidos en objeto de la clase Action.
	 * @param form objeto de la clase Action con los datos de la subscripción.
	 */
	@Override
	public boolean add(Action form) {
		Subscripcion s = new Subscripcion();
		AddSubscripcionAction pform = (AddSubscripcionAction) form;
		s.setProvincia(pform.getProvincia());
		s.setSubtipo(pform.getSubtipo());
		s.setTipo(pform.getSubtipo().getTipo());
		s.setAdmin(pform.getAdmin());
		s.setCliente(pform.getCliente());
		
		if (subscripcionDao.findByExample(s).size()==0) {  //Añadir subscripcion
			subscripcionDao.attachDirty(s);
			return true;
		} else {
			return false;
		}

	}
	
	public List<Object> searchByFields(Action form){
		return null;
	}   

	@Override
	public void update(Action form) {
		
	}

	/**
	 * Búsqueda de subscripción por identificador.
	 * @param id identifificador en la base de datos de la subscripción.
	 * @return p Objeto correspondiente a la subscripción con el identificador dado.
	 */
	public Object searchById(int id){
		Subscripcion s;
		s = subscripcionDao.findById(id);
		return s;
	}
	
	/**
	 * Borra la subscripción.
	 * @param o Objeto correspondiente a la subscripción que se quiere borrar.
	 */
	@Override
	public void delete(Object o) {
		Subscripcion s;
		s = (Subscripcion)o;
		subscripcionDao.delete(s);
	}

}

